package com.ruoyi.system.service.mail;

import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.system.domain.mail.MailInfo;
import com.ruoyi.system.domain.mail.MailInfoDTO;
import com.ruoyi.system.mapper.mail.MailInfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;

@Component
public class MailApplication {

    @Autowired
    private JavaMailSender javaMailSender;
    @Value("${spring.mail.username}")
    private String userName;

    @Autowired
    private MailInfoMapper mailInfoMapper;

    /**
     * 普通邮件发送
     */
    public void sendSimpleMail(MailInfoDTO mailInfoDTO) {
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject(mailInfoDTO.getSubject());
        // 设置邮件发送者，昵称+<邮箱地址>
        message.setFrom("landai"+"<"+userName+">");
        // 设置邮件接收者，可以有多个接收者，多个接受者参数需要数组形式
        List<String> recipients = mailInfoDTO.getRecipients();
        message.setTo(recipients.stream().toArray(String[]::new));
        // 设置邮件抄送人，可以有多个抄送人
//        message.setCc("12****32*qq.com");
        // 设置隐秘抄送人，可以有多个
//        message.setBcc("7******9@qq.com");
        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText(mailInfoDTO.getText());

        MailInfo mailInfo = new MailInfo();
        BeanUtil.copyProperties(mailInfoDTO,mailInfo);
        mailInfo.setCreateTime(new Date());
        mailInfo.setCreateBy("admin");
        mailInfo.setSender("landai"+"<"+userName+">");
        mailInfoMapper.insert(mailInfo);
        // 发送邮件
        javaMailSender.send(message);
    }
}

